Real-time conversations between conversation participants via their computing devices are becoming increasingly common. Such real-time conversations require that the participants be present at their computer devices (e.g., personal digital assistants, digital telephones, etc.) and able to respond when a communication is received. Common forms of real-time conversations are provided by instant messaging services, telephone systems, conferencing systems, and so on. An instant messaging service allows participants to send messages that other participants in the conversation receive quickly. The receiving participants can then send responsive messages to the other participants in a similar manner. To be effective, a real-time conversation relies on the participants' becoming aware of, reviewing, and responding to received messages quickly. This quick response is in contrast to conventional electronic mail systems in which the recipients of electronic mail messages respond to messages at their convenience.
Instant messaging services employ various networking protocols to establish and manage communications between participants. Some instant messaging services employ a “session initiation protocol” (“SIP”). SIP is an application-layer control protocol that computer systems can use to discover one another and to establish, modify, and terminate sessions. SIP is an Internet proposed standard. Its specification is available at the web site of the Internet Engineering Task Force, as are specifications for SIP extensions. These specifications are incorporated herein in their entirety by reference.
A SIP network comprises entities that can participate in a dialog as a client, server, both, or other entity. SIP supports multiple types of entities, including user agents, proxy servers, redirect servers, registrars, and routing agents. User agents initiate and terminate sessions by exchanging messages with other SIP entities. A user agent can be a user agent client (“UAC”), which is a device that initiates SIP requests, or a user agent server (“UAS”), which is a device that receives SIP requests and responds to such requests. As examples, “IP-telephones,” personal digital assistants, and any other type of computing device may be user agents. A device can be a UAC in one dialog and a UAS in another, or may change roles during the dialog. A proxy server is an entity that acts as a server to clients and a client to servers. In so doing, proxy servers intercept, interpret, or forward messages between UACs and UASs. A redirect server accepts a SIP request and generates a response directing the UAC that sent the request to contact an alternate network resource. A registrar is a server that accepts registration information from user agents and informs a location service of the received registration information. A routing agent (e.g., a gateway) can connect entities across networks.
SIP supports multiple message types, including requests, which are sent from a UAC to a UAS, and responses, which are sent from a UAS to a UAC when responding to a request. A SIP message can be composed of three parts. The first part of a SIP message is a “request line,” which includes fields to indicate a message (e.g., INVITE) and a request URI that identifies the user or service to which the request is being directed. The second part of a SIP message comprises headers whose values are represented as name-value pairs. The third part of a SIP message is the message's body, which is used to describe the session to be initiated or which contains data that relates to the session. Message bodies may appear in requests, responses, or other SIP messages.
A Voice over Internet Protocol (“VoIP”) telephone call can be initiated by a caller's device sending a SIP INVITE request identifying the address (e.g., telephone number) of the callee to be called. When the callee's device receives the invitation, it can notify the callee of the invitation and send a SIP SESSION-In-PROGRESS message to the caller. When the callee answers, the callee's device responds to the INVITE request with a SIP 200 OK message. The conversation between the caller and callee can then be transmitted in packets using the Real-Time Protocol. When the caller hangs up, the caller's device sends a SIP BYE request to the callee to terminate the call.
Conventional interactive voice response (“IVR”) systems cannot provide a lot of information to callers in a useful manner. As an example, IVR systems are generally unable to provide photographs, video, and so forth. People have become accustomed to receiving a lot of information, such as using multiple media forms. Conventional IVR systems are incapable of providing multimedia information because they only use telephones.